
package com.javaleague.persistencia.mysql;

import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.SQLException;
import com.javaleague.Constantes;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import com.javaleague.sesionUsuario.Usuario;
import com.javaleague.informacion.ErrorGeneral;
import com.javaleague.informacion.InformacionGeneral;

/**
 * @author TaixMiguel
 */
public class DAOLogin {
    public static Usuario readUserLogin(String email, String pass, String IP) {
        Connection conexion = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        Usuario user = null;
        
        conexion = Conexion.getConexion();
        try {            
            CallableStatement spLogin = conexion.prepareCall("{ call spLogin(?,?) }");
            spLogin.setString(1, email);
            spLogin.setString(2, pass);

            rs = spLogin.executeQuery();
            
            if (rs.next()) {                
                if ( pass.equals(rs.getString("pwdU")) ) {
                    pst = conexion.prepareStatement("UPDATE usuario SET tokenUser=? WHERE emailU= ?");
                    int token = getTokenUser();
                    pst.setInt(1, token);
                    pst.setString(2, email);
                    pst.executeUpdate();
                    
                    user = new Usuario(rs.getInt("idU"), rs.getString("nombreU"), 
                        rs.getDate("fRegistroU"),rs.getString("emailU"),
                        rs.getInt("divisionU"), rs.getString("avatarU"),
                         rs.getString("twitter"),rs.getString("facebook"),rs.getString("youtube"), token);
                   InformacionGeneral.guardarLog(Object.class.getName(), Constantes.Informacion.InfoMensajes.LogeoUsuario, rs.getString("nombreU"), IP);
                }                    
            }            
        } catch (SQLException ex) {
            ErrorGeneral.guardarLog(Object.class.getName(), Constantes.Informacion.ErrorMensajes.SQLException, ex);
        } catch (Exception ex) {     
            ErrorGeneral.guardarLog(Object.class.getName(), Constantes.Informacion.ErrorMensajes.Exception, ex);
        } finally {
            try {
                conexion.close();
            } catch (SQLException ex) {
                ErrorGeneral.guardarLog(Object.class.getName(), Constantes.Informacion.ErrorMensajes.SQLExceptionClose, ex);
            }
        }
        
        return user;
    }
    
    private static int getTokenUser() {
        return (int)(Math.random()*100000000);
    }
}